per vaipos :q :k
; se ambedue (:q < 0) (:q > -2e4) [as "q 0]
; se ambedue (:k < 0) (:k > -2e4) [as "k 0]
vaxy :q :k
fine
as "scala3d 2
per tridimensionale
nt
tana
ps
giu
as "f3d 360
as "k11 0
as "k12 1
as "k13 0
as "k21 -1
as "k22 0
as "k23 0
as "k31 0
as "k32 0
as "k33 1
as "x3d 0
as "y3d 0
as "z3d 0
sostituire
fine
per tridimensionale.cominciaxy :x :y
cominciaxy :x :y
as "f3d 360
as "k11 0
as "k12 1
as "k13 0
as "k21 -1
as "k22 0
as "k23 0
as "k31 0
as "k32 0
as "k33 1
as "x3d 0
as "y3d 0
as "z3d 0
sostituire
fine
per comandi.abbreviati
copiadef "tri "tridimensionale
copiadef "rol "rollare
copiadef "bec "beccheggiare
copiadef "vir "virare
copiadef "cam "camminare
fine
per terna
locale "stato
as "stato penna
terna.assi
aspenna :stato
fine
per niente.terna
terna
fine
per terna.assi
locale "axx
locale "p
giulapenna
spessore 1 viola1
as "p dove
as "dir dir
as "axx 50
puntino 10 :origine.colore
rosso1 giulapenna
disegnare (:x3d + :axx * :k11) (:y3d + :axx * :k12) (:z3d + :axx * :k13)
su vapos :p asdir :dir
verde1 giulapenna
disegnare (:x3d + :axx * :k21) (:y3d + :axx * :k22) (:z3d + :axx * :k23)
su vapos :p asdir :dir
giallo1 giulapenna
disegnare (:x3d + :axx * :k31) (:y3d + :axx * :k32) (:z3d + :axx * :k33)
su vapos :p asdir :dir
fine
per allontanati :zoom
sulapenna
beccheggiare 90
camminare :zoom
beccheggiare -90
fine
per avvicinati :zoom
sulapenna
beccheggiare 90
camminare meno :zoom
beccheggiare -90
fine
per a.sinistra :tot
sulapenna
virare 90
camminare :tot
virare -90
fine
per in.alto :tot
sulapenna
camminare :tot
fine
per in.basso :tot
sulapenna
camminare meno :tot
fine
per a.destra :tot
sulapenna
virare -90
camminare :tot
virare 90
fine
per puntino :dim :colore
ascolriempi :colore
saltaxy meno prodotto :dim .5 meno prodotto :dim .5
blocco :dim :dim
saltaxy prodotto :dim .5 prodotto :dim .5
fine
per omino.dimensione :dimensione
as "omino.dimensione :dimensione
fine
per omino.colore :colore
as "omino.colore :colore
ascolpenna :omino.colore
fine
per omino.spessore :spessore
as "omino.spessore :spessore
spessore :omino.spessore
fine
per omino.forma :braccio1 :braccio2 :gamba1 :gamba2
as "omino.corpo :omino.dimensione
as "braccio.corpo1 prodotto :omino.dimensione :braccio1
as "braccio.corpo2 prodotto :omino.dimensione :braccio2
as "gamba.corpo1 prodotto :omino.dimensione :gamba1
as "gamba.corpo2 prodotto :omino.dimensione :gamba2
fine
per omino.braccio.destro
virare :braccio.destro1
camminare :braccio.corpo1
virare :braccio.destro2
puntino 6 :rosso1
camminare :braccio.corpo2
puntino 10 :rosso3
camminare meno :braccio.corpo2
virare meno :braccio.destro2
camminare meno :braccio.corpo1
virare meno :braccio.destro1
fine
per omino.braccio.sinistro
virare meno :braccio.sinistro1
camminare :braccio.corpo1
virare meno :braccio.sinistro2
puntino 6 :rosso1
camminare :braccio.corpo2
puntino 10 :rosso3
camminare meno :braccio.corpo2
virare :braccio.sinistro2
camminare meno :braccio.corpo1
virare :braccio.sinistro1
fine
per omino.gamba.destra
virare :gamba.destra1
camminare :braccio.corpo1
virare :gamba.destra2
puntino 6 :rosso1
camminare :braccio.corpo2
puntino 10 :rosso3
camminare meno :braccio.corpo2
virare meno :gamba.destra2
camminare meno :braccio.corpo1
virare meno :gamba.destra1
fine
per omino.gamba.sinistra
virare meno :gamba.sinistra1
camminare :braccio.corpo1
virare meno :gamba.sinistra2
puntino 6 :rosso1
camminare :braccio.corpo2
puntino 10 :rosso3
camminare meno :braccio.corpo2
virare :gamba.sinistra2
camminare meno :braccio.corpo1
virare :gamba.sinistra1
fine
per omino.corpo
camminare :omino.corpo
fine
per omino.testa
virare -90
as "testa.dim prodotto .06 :omino.dimensione
ripeti 36 [camminare :testa.dim virare 10]
virare 90
fine
per omino.articola :bd1 :bd2 :bs1 :bs2 :gd1 :gd2 :gs1 :gs2
as "braccio.destro1 :bd1
as "braccio.destro2 :bd2
as "braccio.sinistro1 :bs1
as "braccio.sinistro2 :bs2
as "gamba.destra1 :gd1
as "gamba.destra2 :gd2
as "gamba.sinistra1 :gs1
as "gamba.sinistra2 :gs2
omino.corpo
omino.testa
omino.braccio.destro
omino.braccio.sinistro
camminare meno :omino.corpo
omino.gamba.destra
omino.gamba.sinistra
fine
; Base del sistema logo tridimensionale
per virare :q
locale [l m]
as "l cos :q
as "m sen :q
as "k11 (:l11 * :l + :l21 * :m)
as "k12 (:l12 * :l + :l22 * :m)
as "k13 (:l13 * :l + :l23 * :m)
as "k21 (:l21 * :l - :l11 * :m)
as "k22 (:l22 * :l - :l12 * :m)
as "k23 (:l23 * :l - :l13 * :m)
sostituire
fine
per beccheggiare :q
locale [l m]
as "l cos :q
as "m sen :q
as "k11 (:l11 * :l - :l31 * :m)
as "k12 (:l12 * :l - :l32 * :m)
as "k13 (:l13 * :l - :l33 * :m)
as "k31 (:l31 * :l + :l11 * :m)
as "k32 (:l32 * :l + :l12 * :m)
as "k33 (:l33 * :l + :l13 * :m)
sostituire
fine
per rollare :q
locale [l m]
as "l cos :q
as "m sen :q
as "k21 (:l21 * :l + :l31 * :m)
as "k22 (:l22 * :l + :l32 * :m)
as "k23 (:l23 * :l + :l33 * :m)
as "k31 (:l31 * :l - :l21 * :m)
as "k32 (:l32 * :l - :l22 * :m)
as "k33 (:l33 * :l - :l23 * :m)
sostituire
fine
per sostituire
as "l11 :k11
as "l12 :k12
as "l13 :k13
as "l21 :k21
as "l22 :k22
as "l23 :k23
as "l31 :k31
as "l32 :k32
as "l33 :k33
fine
per camminare :e
as "x3d (:x3d + :e * :l11 * :scala3d)
as "y3d (:y3d + :e * :l12 * :scala3d)
as "z3d (:z3d + :e * :l13 * :scala3d)
disegnare :x3d :y3d :z3d
fine
per disegnare :u :v :w
vaipos (:f3d * :u / (:f3d - :w)) (:f3d * :v / (:f3d - :w))
fine
per vaipos :q :k
; se ambedue (:q < 0) (:q > -2e4) [as "q 0]
; se ambedue (:k < 0) (:k > -2e4) [as "k 0]
vaxy :q :k
fine
as "scala3d 2
per tridimensionale
nt
tana
ps
giu
as "f3d 360
as "k11 0
as "k12 1
as "k13 0
as "k21 -1
as "k22 0
as "k23 0
as "k31 0
as "k32 0
as "k33 1
as "x3d 0
as "y3d 0
as "z3d 0
sostituire
fine
per tridimensionale.cominciaxy :x :y
cominciaxy :x :y
as "f3d 360
as "k11 0
as "k12 1
as "k13 0
as "k21 -1
as "k22 0
as "k23 0
as "k31 0
as "k32 0
as "k33 1
as "x3d 0
as "y3d 0
as "z3d 0
sostituire
fine
per comandi.abbreviati
copiadef "tri "tridimensionale
copiadef "rol "rollare
copiadef "bec "beccheggiare
copiadef "vir "virare
copiadef "cam "camminare
fine
per terna
locale "stato
as "stato penna
terna.assi
aspenna :stato
fine
per niente.terna
terna
fine
per terna.assi
locale "axx
locale "p
giulapenna
spessore 1 viola1
as "p dove
as "dir dir
as "axx 50
puntino 10 :origine.colore
rosso1 giulapenna
disegnare (:x3d + :axx * :k11) (:y3d + :axx * :k12) (:z3d + :axx * :k13)
su vapos :p asdir :dir
verde1 giulapenna
disegnare (:x3d + :axx * :k21) (:y3d + :axx * :k22) (:z3d + :axx * :k23)
su vapos :p asdir :dir
giallo1 giulapenna
disegnare (:x3d + :axx * :k31) (:y3d + :axx * :k32) (:z3d + :axx * :k33)
su vapos :p asdir :dir
fine
per allontanati :zoom
sulapenna
beccheggiare 90
camminare :zoom
beccheggiare -90
fine
per avvicinati :zoom
sulapenna
beccheggiare 90
camminare meno :zoom
beccheggiare -90
fine
per a.sinistra :tot
sulapenna
virare 90
camminare :tot
virare -90
fine
per in.alto :tot
sulapenna
camminare :tot
fine
per in.basso :tot
sulapenna
camminare meno :tot
fine
per a.destra :tot
sulapenna
virare -90
camminare :tot
virare 90
fine
per puntino :dim :colore
ascolriempi :colore
saltaxy meno prodotto :dim .5 meno prodotto :dim .5
blocco :dim :dim
saltaxy prodotto :dim .5 prodotto :dim .5
fine
per omino.dimensione :dimensione
as "omino.dimensione :dimensione
fine
per omino.colore :colore
as "omino.colore :colore
ascolpenna :omino.colore
fine
per omino.spessore :spessore
as "omino.spessore :spessore
spessore :omino.spessore
fine
per omino.forma :braccio1 :braccio2 :gamba1 :gamba2
as "omino.corpo :omino.dimensione
as "braccio.corpo1 prodotto :omino.dimensione :braccio1
as "braccio.corpo2 prodotto :omino.dimensione :braccio2
as "gamba.corpo1 prodotto :omino.dimensione :gamba1
as "gamba.corpo2 prodotto :omino.dimensione :gamba2
fine
per omino.braccio.destro
virare :braccio.destro1
camminare :braccio.corpo1
virare :braccio.destro2
puntino 6 :rosso1
camminare :braccio.corpo2
puntino 10 :rosso3
camminare meno :braccio.corpo2
virare meno :braccio.destro2
camminare meno :braccio.corpo1
virare meno :braccio.destro1
fine
per omino.braccio.sinistro
virare meno :braccio.sinistro1
camminare :braccio.corpo1
virare meno :braccio.sinistro2
puntino 6 :rosso1
camminare :braccio.corpo2
puntino 10 :rosso3
camminare meno :braccio.corpo2
virare :braccio.sinistro2
camminare meno :braccio.corpo1
virare :braccio.sinistro1
fine
per omino.gamba.destra
virare :gamba.destra1
camminare :braccio.corpo1
virare :gamba.destra2
puntino 6 :rosso1
camminare :braccio.corpo2
puntino 10 :rosso3
camminare meno :braccio.corpo2
virare meno :gamba.destra2
camminare meno :braccio.corpo1
virare meno :gamba.destra1
fine
per omino.gamba.sinistra
virare meno :gamba.sinistra1
camminare :braccio.corpo1
virare meno :gamba.sinistra2
puntino 6 :rosso1
camminare :braccio.corpo2
puntino 10 :rosso3
camminare meno :braccio.corpo2
virare :gamba.sinistra2
camminare meno :braccio.corpo1
virare :gamba.sinistra1
fine
per omino.corpo
camminare :omino.corpo
fine
per omino.testa
virare -90
as "testa.dim prodotto .06 :omino.dimensione
ripeti 36 [camminare :testa.dim virare 10]
virare 90
fine
per omino.articola :bd1 :bd2 :bs1 :bs2 :gd1 :gd2 :gs1 :gs2
as "braccio.destro1 :bd1
as "braccio.destro2 :bd2
as "braccio.sinistro1 :bs1
as "braccio.sinistro2 :bs2
as "gamba.destra1 :gd1
as "gamba.destra2 :gd2
as "gamba.sinistra1 :gs1
as "gamba.sinistra2 :gs2
omino.corpo
omino.testa
omino.braccio.destro
omino.braccio.sinistro
camminare meno :omino.corpo
omino.gamba.destra
omino.gamba.sinistra
fine
per omino :dim :col :spess :bc1 :bc2 :gc1 :gc2 :bd1 :bd2 :bs1 :bs2 :gd1 :gd2 :gs1 :gs2
omino.dimensione :dim
omino.colore :col
omino.spessore :spess
omino.forma :bc1 :bc2 :gc1 :gc2
omino.articola :bd1 :bd2 :bs1 :bs2 :gd1 :gd2 :gs1 :gs2
fine
tarta.apparecchia
sfondogrigio7
as "scala3d 1
as "origine.colore :giallo1
tridimensionale
omino 120 :giallo1 6 .6 .5 .6 .5 120 -30 120 90 150 10 150 30